# 作业：
# 1、整理类的笔记到小红书
# 2、定义一个学生Student类。有下面的类属性：
# 1 姓名 name
# 2 年龄 age
# 3 成绩 score（语文，数学，英语) [每课成绩的类型为整数]

# 类方法：
# 1 获取学生的姓名：get_name() 返回类型:str
# 2 获取学生的年龄：get_age() 返回类型:int
# 3 返回3门科目中最高的分数。get_course() 返回类型:int
# 4 将每个实例学生对象写进txt文件里，要持久保存
# 举例：{"姓名":"a","年龄":29,"成绩":{"语文":99,"数学":100,"英语":85}
# class student(name, age, score)
# 5 获取所有学生的信息
# 写好类以后，可以定义2个同学测试下:
# zm = Student('zhangming',20,[69,88,100])
# 返回结果：
# zhangming
# 20

# class student():
#     def __init__(self,name,age,score):
#         self.name=name
#         self.age=age
#         self.score=score
#     def score_(self):
#         f=max(self.score)
#         return f"3门科目中最高的分数是{f}"
#     def i(self):
#         dict1= {'语文': self.score[0], '数学': self.score[1], '英语': self.score[2]}
#         return "大家好，我的名字是{},今年{}岁，成绩是{}".format(self.name,self.age,dict1)
#     def set(self):
#         import os
#         dict1={}
#         dict1['姓名'] = self.name
#         dict1['年龄'] = self.age
#         dict1['成绩'] = {'语文': self.score[0], '数学': self.score[1], '英语': self.score[2]}
#         path = './xin_student'
#         with open(path, "a", encoding='utf-8') as f:
#             f.write(str(dict1))
#             f.write('\n')
#             return ""
#     def look(self):
#             with open(path, "r", encoding='utf-8') as f:
#                 return f.read()
# s1=student("林梓萱",23,[99,100,85])
# s2=student("林子萱",22,[110,150,98])
# print(s1.i())
# print(s1.score_())
# print(s2.i())
# print(s2.score_())
# print(s1.set())
# print(s2.set())







# 3、定义一个字典类：dictclass。完成下面的功能：
# dict = dictclass({你需要操作的字典对象})
# 1 删除某个key
# del_dict(key)
# 2 判断某个键是否在字典里，如果在返回键对应的值，不存在则返回"not found"
# get_dict(key)
# 3 返回键组成的列表：返回类型;(list)
# get_key()
# 4 合并字典，并且返回合并后字典的values组成的列表。返回类型:(list)
# update_dict({要合并的字典})
# 100
# update_dict({要合并的字典})
# 100
# dict1 = {"1":1,"2":2,"3":3}
# dict2 = {"4":4,"5":5,"6":6}
# class dictclass():
#     def __init__(self,dict1):
#         self.dict1 = dict1
#     def del_dict(self,key1):
#         if key1 in dict1:
#             value = dict1[key1]
#             print(f"键 {key1} 对应的值为 {value}")
#         else:
#             print(f"没有找到键 {key1}")
#     def get_dict(self):
#         list1 =[i for i in dict1.keys()]
#         print(list1)
#     def update_dict(self,dict2):
#         self.dict1.update(dict2)
#         print(self.dict1)
# p1 = dictclass(dict1)
# p1.del_dict("5")
# p1.update_dict(dict2)






















# 4、定义一个列表的操作类：Listinfo
#
# 包括的方法:
#
# 1 列表元素添加: add_key(keyname) [keyname:字符串或者整数类型]
# 2 列表元素取值：get_key(num) [num:整数类型]
# 3 列表合并：update_list(list) [list:列表类型]
# 4 删除并且返回最后一个元素：del_key()
#
# a = Listinfo([44,222,111,333,454,'sss','333'])
# a = Listinfo([44,222,111,333,454,'sss','333'])
# list1=[1,2,3,4,5,6,7,7,1]
# list = [9,10]
# class Listinfo():
#     def __init__(self,list1):
#         self.list1=list1
#     def add_key(self,keyname):
#         list1.append(keyname)
#         print(list1)
#     def get_key(self,num):
#         a = list1.index(num)
#         print(a)
#     def update_list(self,list):
#         for i in list:
#             list1.append(i)
#         print(list1)
#     def del_key(self):
#         b = list1[-1]
#         list1.pop(-1)
#         print(b)
#         print(list1)
# p1 = Listinfo(list1)
# p1.add_key(1)
# p1.get_key(1)
# p1.update_list(list)
# p1.del_key()










# 5、做一个学生点名系统，系统里支持：存入学生、更改学生、删除学生、点到学生姓名方法
#
# 存入学生（姓名、年龄、家庭地址、手机号）： 存入成功后，提示xxx存入成功
# 更改学生（姓名、年龄、家庭地址、手机号）：可以修改学生内容的任意一个字段
# 删除学生：删除的学生将不在展示
# 展示全部学生：可以看到全部的学生姓名
# 学生姓名：随机抽取任意一个存在的学生信息，然后打印：到！。举例： 刘闯到！
#
# 以上内容，需要连接数据库，每次的数据都需要增、删、改、查去做
#
# student表：name、age、address、phone_number
# import random
# dic1={"秦彪":{"age":18,"address":"沈阳","phone_number":15840370680}}
# class student():
#     def __init__(self,dic1):
#         self.dic1 = dic1
#     def cunru(self,name,age,address,phone):
#         self.name= name
#         self.age = age
#         self.address = address
#         self.phone = phone
#         if self.name not in dic1:
#             dic1[self.name] = {"age":self.age,"address":self.address,"phone_number":self.phone}
#             print(dic1)
#             print("添加完毕")
#         else:
#             print("你添加的学生已经存在啦 请不要重复添加")
#     def genggai(self,name,canshu,zhi):
#         if name in dic1:
#             dic1[self.name][canshu] =zhi
#             print(dic1)
#             print("更改成功哦")
#     def shanchu(self,name):
#         if name in dic1:
#             del dic1[name]
#             print("已经删除了哦")
#             print(dic1)
#         else:print("你删除的用户不存在")
#     def quanbu(self):
#         list1 = list(dic1.keys())
#         print(list1)
#         print("已经全部显示了")
#     def suiji(self):
#         suiji1 = random.choice(list(dic1.keys()))
#         print(f"{suiji1} 到！")
# p1= student(dic1)
# p1.cunru("秦彪1",22,2,2)
# p1.genggai("秦彪1","age",23)
# p1.shanchu("秦彪1")
# p1.quanbu()
# p1.suiji()

# 6、点餐管理系统
# 1》、餐馆可以新增菜品、下架菜品、修改菜品
# 2》、每个菜品，都有对应的库存，所有菜品的库存均为999，每出一道菜，库存-1
# 菜品有对应的价格，餐厅老板定义价格每道菜不允许超过15元，没有小数单位，均为整数
# 3》、餐馆后台有点赞系统，能够收集客户对菜品的喜好，0~5分
# 4》、有菜品评分提报功能，对平均分数（菜品总分/打分人数）低于3分的菜品进行强制下架；
# dic1 = {"凉菜":{"库存":999,"price":12,"fenshu":5}}
# con = 0
# sum = 0
# class diancan():
#     def __init__(self,dic1):
#         self.dic1= dic1
#     def add(self,name,price,num=999,fenshu=5):
#         if name in dic1:
#             print("这个菜已经存在了哦")
#         else:
#             dic1[name] = {"库存":num,"price":price,"fenshu":fenshu}
#             print(dic1)
#             print("添加成功")
#     def xiugai(self,name,name1,key):
#         if name1 in dic1[name]:
#             dic1[name][name1] = key
#             print("修改成功")
#             print(dic1)
#         else:
#             print("你要修改的商品不存在！")
#     def shanchu(self,name):
#         if name in dic1:
#             del dic1[name]
#             print("删除成功")
#             print(dic1)
#     def kucun(self,name):
#         if dic1[name]["库存"]>0:
#             dic1[name]["库存"]-=1
#             print("库存已经-1")
#             print(dic1)
#         else:print("库存不足")
#     def dafen(self,name,fenhsu):
#         global con,sum
#         sum+=fenhsu
#         con+=1
#         dic1[name]["fenshu"] = sum/con
#         print(f"{name}的分数是{dic1[name]['fenshu']}")
#         if dic1[name]["fenshu"]<3:
#             del dic1[name]
#             print("你的分数小于3分，已经被删除")
#             print(dic1)
# p1=diancan(dic1)
# p1.add("鱼香肉丝",15)
# p1.xiugai("鱼香肉丝","price",11)
# p1.shanchu("凉菜")
# p1.kucun("鱼香肉丝")
# p1.dafen("鱼香肉丝",4)
# p1.dafen("鱼香肉丝",2)
#
# 7、定义一个桌子类（Desk），包含长（length）、宽（width）、高（height）属性，包含一个打印桌子信息属性的方法（showInfo）。实例化2个桌子对象，为其赋予不同的属性值，并调用showInfo方法，输出每个桌子的信息。
# class Desk():
#     def __init__(self,length,width,height):
#         self.length = length
#         self.width = width
#         self.height = height
#     def showInfo(self):
#         print(f"桌子的长为{self.length}，宽为{self.width}，高为{self.height}")
# p1=Desk(12,12,12)
# p1.showInfo()
# p12=Desk(122,122,122)
# p1.showInfo()

# 8、定义一个用户类(User),用户名(username)和密码(password)是这个类的属性。
# class User():
#     def __init__(self,username,password):
#         self.username=username
#         self.password=password
#     def mi(self):
#         return "用户名是{}密码是{}".format(self.username,self.password)
# a=input("请输入")
# b=input("请茹茹")
# p1 = User(a,b)
# print(p1.mi())


# 9、定义一个计算器类，有加减乘除四个方法
# class jsq():
#     def jia(self,a,b):
#         return a+b
#     def jian(self,a,b):
#         return  a-b
#     def chang(self,a,b):
#         return a*b
#     def chu(self,a,b):
#         if a !=0:
#             return a/b
#         else:
#             return "你是不是有啥大病"
# a=int(input("请输入第一个数"))
# b=int(input("请输入第二个数"))
# print(jsq().jia(a, b))
# print(jsq().jian(a, b))
# print(jsq().chang(a, b))
# print(jsq().chu(a, b))



# 10、创建一个名为Person的类，具有以下属性和方法：
#
# 属性：name（姓名），age（年龄）
# 方法：greet()，打印出一句问候语，包括该人的姓名和年龄:

# class Person():
#     def __init__(self,name,age):
#         self.name=name
#         self.age=age
#     def greet(self):
#         return "你好，我是{}，今年{}岁，很高兴和你做朋友！".format(self.name,self.age)
# mingz=Person("xxx",27)
# print(mingz.greet())



# 11、定义一个图书管理系统类，图书可以新增、修改、删除，要求新增的每个图书都加到txt文本里，数据持久化
# 新增：图书名、作者名称、新建年月日
# 修改：图书名、作者名称、新建年月日
# 删除：图书删掉，且不在展示
# 查看：全量查询，精确查询，需要用户传入形参来控制返回结果
# class Shangjia:
#     def __init__(self, dict):
#         self.dict = dict
#
#     def add1(self, name1, sku1, price1):
#         if name1 in self.dict:
#             print("图书已经存在！")
#         else:
#             self.dict.update({name1: {"作者名字": sku1, "新建时间": price1}})
#             print("添加完成")
#
#     def xiugai(self, name1, sub_name, new_value):
#         for key in self.dict.keys():
#             if self.dict[key][sub_name] == self.dict[name1][sub_name]:
#                 self.dict[key][sub_name] = new_value
#         print(self.dict)
#         print("修改成功")
#
#     def shanchu(self, name1):
#         if name1 in self.dict:
#             del self.dict[name1]
#             print("删除")
#         else:
#             print("图书不存在")
#         print(self.dict)
#     def xianshi(self):
#          print(drit)
#     def jingzhun(self,name1):
#         if name1 in self.dict:
#             print(drit[name1])
#         else:print("你查询的内容不存在")
#
#
# p1 = Shangjia(drit)
# p1.add1("图书4", "11111111", "999年")
# p1.xiugai("图书1", "新建时间", "888年")
# p1.shanchu("图书2")
# p1.xianshi()
# p1.jingzhun("图书1")

# 12、创建一个名为"Car"的类，该类具有"品牌"和"颜色"属性。创建一个"start_engine"方法，该方法打印出"启动汽车引擎！"的消息。创建一个"stop_engine"方法，该方法打印出"关闭汽车引擎！"的消息
# class Car():
#     def __init__(self,pinpai,color):
#         self.pinpai=pinpai
#         self.color =color
#     def start_engine(self):
#         print("启动汽车引擎！")
#     def stop_engine(self):
#         print("关闭汽车引擎！")
# p1 = Car("大众","黄色")
# p1.start_engine()
# p1.stop_engine()
#
#
# 13、淘宝商家后台，可以上架商品、下架商品，功能如下：
#  （1） 可以添加商品，商家添加完的商品会存到商品列表
#  1.1  商品要有名称、sku、价格
#  （2） 可以修改商品信息：名称、sku、价格
#  （3） 可以对商品进行下架，下架后的商品不再展示
# drit = {"name": {"sku": "111", "price": 1499},"name2":{"sku": "111", "price": 1499}}
# list1 = {"name": {"sku": "111", "price": 1499}}
# class Shangjia:
#     def __init__(self, dict):
#         self.dict = dict
#     def add1(self,name1,sku1,price1):
#         if name1 in drit:
#             print("商品已经存在！")
#         else:
#             drit.update({name1: {"sku": sku1, "price": price1}})
#     def xiugai(self, name1,sub_name,new_value):
#         for key in self.dict.keys():
#             if self.dict[key][sub_name] == self.dict[name1][sub_name]:
#                 self.dict[key][sub_name] = new_value
#         print(self.dict)
#         return "修改成功"
#     def shanchu(self,name1):
#         for key in self.dict.keys():
#             if self.dict[key] == self.dict[name1]:
#                 del self.dict[name1]
#                 print("我要删除你")
#                 break
#         print(self.dict)
# p1 = Shangjia(drit)
# p1.add1("name11","两件","15")
# p1.xiugai("name","sku","一件")
# p1.shanchu("name")
#

# 14、定义一个人类
# 1.小明和小美都爱跑步
# 2.小美体重45.0公斤
# 3.小明体重75.0公斤
# 4.每次跑步都会减少0.5公斤
# 5.每次吃东西都会增加1公斤

# class person():
#     def __init__(self, name, weight):
#         self.name = name
#         self.weight = weight
#     def run(self):
#         print("{}跑步去了".format(self.name))
#         self.weight -= 0.5
#     def eat(self):
#         print("{}又吃上了".format(self.name))
#         self.weight += 1
# ming = person("小明", 75)
# mei = person("小美", 45)
# ming.run()
# mei.eat()
# print("小明的体重为{}".format(ming.weight))
# print("小美的体重为{}".format(mei.weight))
# 15、士兵瑞恩有一把ak47
# 士兵可以开火（开火扣动的是扳机）
# 抢能够发射子弹（把子弹打出去）
# 抢能够装子弹–增加子弹数量
# 要求没子弹，需要输出没有子弹了，且发射失败
# class qbz03():
#     def __init__(self,qinag,danjia,banji):
#         self.banji=banji
#         self.qinag=qinag
#         self.danjia=danjia
#
#     def kaqiang(self):
#         if self.banji ==0:
#             self.qinag -=1
#             return f"士兵开枪了！剩余子弹数为{}".format(self.qinag)
# kq=qbz03(30,60,0)
# print(kq.kaqiang())


# import time
#
# class who():
#     def __init__(self,name):
#         self.name=name
#         self.gun=None
#     def fire(self):
#         if self.gun:
#             if gun.bullect_count:
#                 self.gun.shoot()
#             else:
#                 print(f"士兵{self.name}没有子弹，等死ing")
#                 self.gun.add_bullet(5)
#         else:
#             print(f"士兵{self.name}没有枪，等死ing")
#     def kkk(self):
#         return f"士兵{self.name}去了缅甸"
# class Gun():
#     def __init__(self,model):
#         self.model=model
#         self.bullect_count=0
#     def add_bullet(self,nums):
#         self.bullect_count +=nums
#         print("填弹，继续开枪")
#         self.shoot()
#     def shoot(self):
#         print("开枪！！！")
#         self.bullect_count -=1
#         print(f"还剩下{self.bullect_count}颗子弹")
# ren=who("小天才")
# print(ren)
# gun=Gun("ak47")
# ren.gun=gun
# print(ren.kkk())
# ren.fire()


# num=1
# while True:
#     if num ==2:
#         time.sleep(5)
#     else:
#         num +=1
#         ren.fire()



